var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var upload = require('jquery-file-upload-middleware');

var app = express();
//设置跨域访问
app.all("*", function (req, res, next) {
  //设置允许跨域的域名，*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", "*");
  //允许的header类型
  res.header("Access-Control-Allow-Headers", "*");
  //跨域允许的请求方式 
  res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
  if (req.method.toLowerCase() == 'options')
    res.sendStatus(200);  //让options尝试请求快速结束
  else
    next();
})
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// app.use('/uploads', function (req, res) {
//   var fileName = req.file.filename;
//   console.log("test")
//   var destDir = req.body.dir == undefined ? "default" : req.body.dir;
//   console.log("test")
//   var sourceFile = req.file.path;
//   console.log("test")
//   var destPath = path.join(__dirname.replace("routes", ""), "uploads", destDir, fileName);
//   console.log("test")
//   var dest_Dir = path.join(__dirname.replace("routes", ""), "uploads", destDir);
//   console.log("test")
//   var fileurl = uploadFileDomin + destPath.substr(destPath.indexOf("uploads"));
//   console.log("test")
//   fileurl = fileurl.replace(/\\/g, "/");
//   console.log("test")
//   fs.exists(dest_Dir, function (exists) {
//   console.log("test")
//   if (exists) {
//       fs.rename(sourceFile, destPath, function (err) {
//         res.status(200).json({
//           httpCode: 200,
//           message: '上传成功',
//           data: {
//             "fileurl": fileurl
//           },
//         });
//       });
//     }
//     else {
//       fs.mkdir(dest_Dir, 0777, function (err) {
//         if (err) {
//           res.status(500).json({
//             httpCode: 500,
//             message: err,
//             data: [],
//           });
//         } else {
//           fs.rename(sourceFile, destPath, function (err) {
//             res.status(200).json({
//               httpCode: 200,
//               message: '上传成功',
//               data: {
//                 "fileurl": fileurl
//               },
//             });
//           });
//         }
//       })
//     }
//   });
// })
// app.use('/uploads', upload.fileHandler(
//   {
//     uploadDir: '/home/fredyvia/backend/public/uploads',
//     // uploadUrl: '/uploads',
//   }
// ));
// catch 404 and forward to error handler
app.use("/test", function (req, res) {
  res.send("test")
});
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
process.env.PORT = 9090;
module.exports = app;
